// pages/recommend/recommend.js

import request from "../../utils/request"
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 存储每日推荐的歌曲列表
        songs: [],
        //当前日期
        dateText: ""
    },
    //初始化请求每日推荐的歌曲列表
    async getSongsList() {
        try {
            const res = await request({
                url: '/recommend/songs'
            })
            // console.log(res);
            if (res.data.code === 200) {
                this.setData({
                    songs: res.data.data.dailySongs
                })
            }
        } catch (error) {
            console.log(error);
            wx.showToast({
                title: '请求出错',
                icon: "error"
            })
        }
    },

    /**
    * 获取当前的日期
    */
    getDate() {
        const date = new Date()
        this.setData({
            dateText: `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}/${'日一二三四五六'.split('')[date.getDay()]}`
        })
    },

    /**
    * 跳转到歌曲播放页面
    *  因为播放页面是所有歌曲的共同页面，所以，我们需要在跳转到播放页的时候传入对应歌曲id，然后播放页面获取到id以后，通过去发送请求获取对应的歌曲信息
    * 我们可以通过 url 的 queryString 去携带数据
    */
    gotoPlayPage(e) {
        // console.log(e);
        wx.navigateTo({
            url: '/pages/play/play?id=' + e.currentTarget.dataset.id,
        })
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.getSongsList()
        this.getDate()

        //使用自定义事件实现页面通信
        // const myEvent = getApp().globalData.myEvent
        // myEvent.on("next", (currentSongId) => {
        //     // console.log("接收到了next", currentSongId);
        //     // 根据接收到的当前播放歌曲的currentSongId 从 songs 查找下一首歌曲的 id
        //     // 1、找到 currentSongId 对应的这条数据的 下标
        //     const index = this.data.songs.findIndex((item) => item.id == currentSongId)
        //     // console.log("找到了当前播放歌曲的下标", index);
        //     // 2、返回 下标 + 1 对应的数据的id，如果是列表的最后一首歌曲，就返回列表第一首歌曲的id
        //     const nextSongId = index === this.data.songs.length - 1 ? this.data.songs[0].id : this.data.songs[index + 1].id
        //     // console.log('下一首歌曲的id', nextSongId);

        //     //再次通过自定义事件将下一首歌曲的id传递给play页面
        //     myEvent.emit('nextId',nextSongId)
        // })

        //使用pubsub实现页面通信
        const pubsub = getApp().globalData.pubsub
        pubsub.subscribe("next", (msg,currentSongId) => {
            // console.log("接收到了next", currentSongId);
            // 根据接收到的当前播放歌曲的currentSongId 从 songs 查找下一首歌曲的 id
            // 1、找到 currentSongId 对应的这条数据的 下标
            const index = this.data.songs.findIndex((item) => item.id == currentSongId)
            // console.log("找到了当前播放歌曲的下标", index);
            // 2、返回 下标 + 1 对应的数据的id，如果是列表的最后一首歌曲，就返回列表第一首歌曲的id
            const nextSongId = index === this.data.songs.length - 1 ? this.data.songs[0].id : this.data.songs[index + 1].id
            // console.log('下一首歌曲的id', nextSongId);

            //再次通过自定义事件将下一首歌曲的id传递给play页面
            pubsub.publish('nextId', nextSongId)
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})